<!DOCTYPE HTML>
<html lang="en">
<head>
<title>Linux-PAM Developers&#39; Guide - The Linux-PAM Guides | Docs4dev</title>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta name="description" content="This manual documents what an application developer needs to know about the Linux-PAM library. It describes how an application might use the Linux-PAM library to authenticate users. ">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="HandheldFriendly" content="true">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta property="og:type" content="website">
<meta property="og:title" content="Linux-PAM Developers&#39; Guide - The Linux-PAM Guides">
<meta property="og:url" content="https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/">
<meta property="og:site_name" content="Docs4dev">
<meta property="og:locale" content="zh_CN">
<meta name="twitter:card" content="This manual documents what an application developer needs to know about the Linux-PAM library. It describes how an application might use the Linux-PAM library to authenticate users. ">
<meta name="generator" content="Docs4dev template engine">
<link rel="stylesheet" href="static/css/app.min.css">
<link rel="shortcut icon" href="https://www.docs4dev.com/static/images/favicon.ico" type="image/x-icon">
<script async="" src="static/js/js.js"></script>
<script async="" src="static/js/adsbygoogle.js" crossorigin="anonymous"></script>
<script>
    window.dataLayer = window.dataLayer || [];

    function gtag() {
      dataLayer.push(arguments);
    }

    gtag('js', new Date());
    gtag('config', 'UA-129571937-1');
  </script>
<link rel="amphtml" href="https://www.docs4dev.com/amp/docs/en/linux-pam/1.1.2/reference/index.html">

<script type="application/ld+json">{"name":null,"headline":"Linux-PAM Developers' Guide-The Linux-PAM Guides","inLanguage":"en-US","version":"1.1.2","image":"/static/icon/icon-linux.png","datePublished":"2021-05-20T12:51:01Z","dateCreated":"2021-05-20T12:51:01Z","dateModified":"2021-07-03T16:02:23Z","@context":"https://schema.org/","@type":"APIReference","abstract":"This manual documents what an application developer needs to know about the Linux-PAM library. It describes how an application might use the Linux-PAM library to authenticate users. "}</script>
</head>
<body>
<div class="book with-summary">
<div class="book-summary">
<div class="logo">
<a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference');" style="color: inherit;">
<img src="static/picture/icon-linux.png" style="width: 48px; height: 48px;" alt="Logo">
</a>
<b style="color: inherit; margin-left: 8px;">Linux-PAM Developers&#39; Guide</b>
</div>
<div class="item">
<div>
<label for="version">版本</label>
<select id="version" onchange="onVersionChange(this)">
<option value="1.1.2" selected="selected">1.1.2</option>
</select>
</div>
<div style="margin-top: 8px;">
<label for="language">语言</label>
<select id="language" onchange="onLangChange(this)" value="en">
<option value="en" selected="selected">English</option>
<option value="zh">中文</option>
</select>
</div>

</div>
<div class="item menus">
<a title="Table of Contents" style="margin-right: 8px;" href="#">
<i class="fa fa-chevron-left"></i>
<span style="margin-left: 2px;">返回目录</span>
</a>
</div>
<nav role="navigation" id="navigation">
<ul class="summary">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/Linux-PAM_SAG.html');" title="The System Administrators' Guide"> The System Administrators' Guide </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-introduction.html');" title="1. Introduction"> 1. Introduction </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-text-conventions.html');" title="2. Some comments on the text"> 2. Some comments on the text </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-overview.html');" title="3. Overview"> 3. Overview </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-configuration.html');" title="4. The Linux-PAM configuration file"> 4. The Linux-PAM configuration file </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-configuration-file.html');" title="4.1. Configuration file syntax"> 4.1. Configuration file syntax </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-configuration-file.html');" title="4.1. Configuration file syntax"> 4.1. Configuration file syntax </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-configuration-directory.html');" title="4.2. Directory based configuration"> 4.2. Directory based configuration </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-configuration-example.html');" title="4.3. Example configuration file entries"> 4.3. Example configuration file entries </a> </li>
</ul> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-security-issues.html');" title="5. Security issues"> 5. Security issues </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-security-issues-wrong.html');" title="5.1. If something goes wrong"> 5.1. If something goes wrong </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-security-issues-wrong.html');" title="5.1. If something goes wrong"> 5.1. If something goes wrong </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-security-issues-other.html');" title="5.2. Avoid having a weak `other' configuration"> 5.2. Avoid having a weak `other' configuration </a> </li>
</ul> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-module-reference.html');" title="6. A reference guide for available modules"> 6. A reference guide for available modules </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_access.html');" title="6.1. pam_access - logdaemon style login access control"> 6.1. pam_access - logdaemon style login access control </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_access.html');" title="6.1. pam_access - logdaemon style login access control"> 6.1. pam_access - logdaemon style login access control </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_cracklib.html');" title="6.2. pam_cracklib - checks the password against dictionary words"> 6.2. pam_cracklib - checks the password against dictionary words </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_debug.html');" title="6.3. pam_debug - debug the PAM stack"> 6.3. pam_debug - debug the PAM stack </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_deny.html');" title="6.4. pam_deny - locking-out PAM module"> 6.4. pam_deny - locking-out PAM module </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_echo.html');" title="6.5. pam_echo - print text messages"> 6.5. pam_echo - print text messages </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_env.html');" title="6.6. pam_env - set/unset environment variables"> 6.6. pam_env - set/unset environment variables </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_exec.html');" title="6.7. pam_exec - call an external command"> 6.7. pam_exec - call an external command </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_faildelay.html');" title="6.8. pam_faildelay - change the delay on failure per-application"> 6.8. pam_faildelay - change the delay on failure per-application </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_filter.html');" title="6.9. pam_filter - filter module"> 6.9. pam_filter - filter module </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_ftp.html');" title="6.10. pam_ftp - module for anonymous access"> 6.10. pam_ftp - module for anonymous access </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_group.html');" title="6.11. pam_group - module to modify group access"> 6.11. pam_group - module to modify group access </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_issue.html');" title="6.12. pam_issue - add issue file to user prompt"> 6.12. pam_issue - add issue file to user prompt </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_keyinit.html');" title="6.13. pam_keyinit - display the keyinit file"> 6.13. pam_keyinit - display the keyinit file </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_lastlog.html');" title="6.14. pam_lastlog - display date of last login"> 6.14. pam_lastlog - display date of last login </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_limits.html');" title="6.15. pam_limits - limit resources"> 6.15. pam_limits - limit resources </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_listfile.html');" title="6.16. pam_listfile - deny or allow services based on an arbitrary file"> 6.16. pam_listfile - deny or allow services based on an arbitrary file </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_localuser.html');" title="6.17. pam_localuser - require users to be listed in /etc/passwd"> 6.17. pam_localuser - require users to be listed in /etc/passwd </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_loginuid.html');" title="6.18. pam_loginuid - record user's login uid to the process attribute"> 6.18. pam_loginuid - record user's login uid to the process attribute </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_mail.html');" title="6.19. pam_mail - inform about available mail"> 6.19. pam_mail - inform about available mail </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_mkhomedir.html');" title="6.20. pam_mkhomedir - create users home directory"> 6.20. pam_mkhomedir - create users home directory </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_motd.html');" title="6.21. pam_motd - display the motd file"> 6.21. pam_motd - display the motd file </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_namespace.html');" title="6.22. pam_namespace - setup a private namespace"> 6.22. pam_namespace - setup a private namespace </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_nologin.html');" title="6.23. pam_nologin - prevent non-root users from login"> 6.23. pam_nologin - prevent non-root users from login </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_permit.html');" title="6.24. pam_permit - the promiscuous module"> 6.24. pam_permit - the promiscuous module </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_pwhistory.html');" title="6.25. pam_pwhistory - grant access using .pwhistory file"> 6.25. pam_pwhistory - grant access using .pwhistory file </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_rhosts.html');" title="6.26. pam_rhosts - grant access using .rhosts file"> 6.26. pam_rhosts - grant access using .rhosts file </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_rootok.html');" title="6.27. pam_rootok - gain only root access"> 6.27. pam_rootok - gain only root access </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_securetty.html');" title="6.28. pam_securetty - limit root login to special devices"> 6.28. pam_securetty - limit root login to special devices </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_selinux.html');" title="6.29. pam_selinux - set the default security context"> 6.29. pam_selinux - set the default security context </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_shells.html');" title="6.30. pam_shells - check for valid login shell"> 6.30. pam_shells - check for valid login shell </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_succeed_if.html');" title="6.31. pam_succeed_if - test account characteristics"> 6.31. pam_succeed_if - test account characteristics </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_tally.html');" title="6.32. pam_tally - login counter (tallying) module"> 6.32. pam_tally - login counter (tallying) module </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_tally2.html');" title="6.33. pam_tally2 - login counter (tallying) module"> 6.33. pam_tally2 - login counter (tallying) module </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_time.html');" title="6.34. pam_time - time controlled access"> 6.34. pam_time - time controlled access </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_timestamp.html');" title="6.35. pam_timestamp - authenticate using cached successful authentication attempts"> 6.35. pam_timestamp - authenticate using cached successful authentication attempts </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_umask.html');" title="6.36. pam_umask - set the file mode creation mask"> 6.36. pam_umask - set the file mode creation mask </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_unix.html');" title="6.37. pam_unix - traditional password authentication"> 6.37. pam_unix - traditional password authentication </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_userdb.html');" title="6.38. pam_userdb - authenticate against a db database"> 6.38. pam_userdb - authenticate against a db database </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_warn.html');" title="6.39. pam_warn - logs all PAM items"> 6.39. pam_warn - logs all PAM items </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_wheel.html');" title="6.40. pam_wheel - only permit root access to members of group wheel"> 6.40. pam_wheel - only permit root access to members of group wheel </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-pam_xauth.html');" title="6.41. pam_xauth - forward xauth keys between users"> 6.41. pam_xauth - forward xauth keys between users </a> </li>
</ul> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-see-also.html');" title="7. See also"> 7. See also </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-author.html');" title="8. Author/acknowledgments"> 8. Author/acknowledgments </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/sag-copyright.html');" title="9. Copyright information for this document"> 9. Copyright information for this document </a> </li>
</ul> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/Linux-PAM_MWG.html');" title="The Module Writers' Guide"> The Module Writers' Guide </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-introduction.html');" title="1. Introduction"> 1. Introduction </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-introduction-description.html');" title="1.1. Description"> 1.1. Description </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-introduction-description.html');" title="1.1. Description"> 1.1. Description </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-introduction-synopsis.html');" title="1.2. Synopsis"> 1.2. Synopsis </a> </li>
</ul> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-by-module.html');" title="2. What can be expected by the module"> 2. What can be expected by the module </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-by-module-item.html');" title="2.1. Getting and setting PAM_ITEMs and data"> 2.1. Getting and setting PAM_ITEMs and data </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-by-module-item.html');" title="2.1. Getting and setting PAM_ITEMs and data"> 2.1. Getting and setting PAM_ITEMs and data </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-by-module-item.html#mwg-pam_set_data');" title="2.1.1. Set module internal data"> 2.1.1. Set module internal data </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-by-module-item.html#mwg-pam_set_data');" title="2.1.1. Set module internal data"> 2.1.1. Set module internal data </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-by-module-item.html#mwg-pam_get_data');" title="2.1.2. Get module internal data"> 2.1.2. Get module internal data </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-by-module-item.html#mwg-pam_set_item');" title="2.1.3. Setting PAM items"> 2.1.3. Setting PAM items </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-by-module-item.html#mwg-pam_get_item');" title="2.1.4. Getting PAM items"> 2.1.4. Getting PAM items </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-by-module-item.html#mwg-pam_get_user');" title="2.1.5. Get user name"> 2.1.5. Get user name </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-by-module-item.html#mwg-pam_conv');" title="2.1.6. The conversation function"> 2.1.6. The conversation function </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-by-module-item.html#adg-pam_putenv');" title="2.1.7. Set or change PAM environment variable"> 2.1.7. Set or change PAM environment variable </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-by-module-item.html#adg-pam_getenv');" title="2.1.8. Get a PAM environment variable"> 2.1.8. Get a PAM environment variable </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-by-module-item.html#adg-pam_getenvlist');" title="2.1.9. Getting the PAM environment"> 2.1.9. Getting the PAM environment </a> </li>
</ul> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-by-module-other.html');" title="2.2. Other functions provided by libpam"> 2.2. Other functions provided by libpam </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-by-module-other.html#adg-pam_strerror');" title="2.2.1. Strings describing PAM error codes"> 2.2.1. Strings describing PAM error codes </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-by-module-other.html#adg-pam_strerror');" title="2.2.1. Strings describing PAM error codes"> 2.2.1. Strings describing PAM error codes </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-by-module-other.html#adg-pam_fail_delay');" title="2.2.2. Request a delay on failure"> 2.2.2. Request a delay on failure </a> </li>
</ul> </li>
</ul> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-of-module.html');" title="3. What is expected of a module"> 3. What is expected of a module </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-of-module-overview.html');" title="3.1. Overview"> 3.1. Overview </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-of-module-overview.html');" title="3.1. Overview"> 3.1. Overview </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-of-module-overview.html#mwg-expected-of-module-overview-1');" title="3.1.1. Functional independence"> 3.1.1. Functional independence </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-of-module-overview.html#mwg-expected-of-module-overview-1');" title="3.1.1. Functional independence"> 3.1.1. Functional independence </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-of-module-overview.html#mwg-expected-of-module-overview-2');" title="3.1.2. Minimizing administration problems"> 3.1.2. Minimizing administration problems </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-of-module-overview.html#mwg-expected-of-module-overview-3');" title="3.1.3. Arguments supplied to the module"> 3.1.3. Arguments supplied to the module </a> </li>
</ul> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-of-module-auth.html');" title="3.2. Authentication management"> 3.2. Authentication management </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-of-module-auth.html#mwg-pam_sm_authenticate');" title="3.2.1. Service function for user authentication"> 3.2.1. Service function for user authentication </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-of-module-auth.html#mwg-pam_sm_authenticate');" title="3.2.1. Service function for user authentication"> 3.2.1. Service function for user authentication </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-of-module-auth.html#mwg-pam_sm_setcred');" title="3.2.2. Service function to alter credentials"> 3.2.2. Service function to alter credentials </a> </li>
</ul> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-of-module-acct.html');" title="3.3. Account management"> 3.3. Account management </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-of-module-acct.html#mwg-pam_sm_acct_mgmt');" title="3.3.1. Service function for account management"> 3.3.1. Service function for account management </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-of-module-acct.html#mwg-pam_sm_acct_mgmt');" title="3.3.1. Service function for account management"> 3.3.1. Service function for account management </a> </li>
</ul> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-of-module-session.html');" title="3.4. Session management"> 3.4. Session management </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-of-module-session.html#mwg-pam_sm_open_session');" title="3.4.1. Service function to start session management"> 3.4.1. Service function to start session management </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-of-module-session.html#mwg-pam_sm_open_session');" title="3.4.1. Service function to start session management"> 3.4.1. Service function to start session management </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-of-module-session.html#mwg-pam_sm_close_session');" title="3.4.2. Service function to terminate session management"> 3.4.2. Service function to terminate session management </a> </li>
</ul> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-of-module-chauthtok.html');" title="3.5. Authentication token management"> 3.5. Authentication token management </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-of-module-chauthtok.html#mwg-pam_sm_chauthtok');" title="3.5.1. Service function to alter authentication token"> 3.5.1. Service function to alter authentication token </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-expected-of-module-chauthtok.html#mwg-pam_sm_chauthtok');" title="3.5.1. Service function to alter authentication token"> 3.5.1. Service function to alter authentication token </a> </li>
</ul> </li>
</ul> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-see-options.html');" title="4. Generic optional arguments"> 4. Generic optional arguments </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-see-programming.html');" title="5. Programming notes"> 5. Programming notes </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-see-programming-sec.html');" title="5.1. Security issues for module creation"> 5.1. Security issues for module creation </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-see-programming-sec.html');" title="5.1. Security issues for module creation"> 5.1. Security issues for module creation </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-see-programming-sec.html#mwg-see-programming-sec-res');" title="5.1.1. Sufficient resources"> 5.1.1. Sufficient resources </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-see-programming-sec.html#mwg-see-programming-sec-res');" title="5.1.1. Sufficient resources"> 5.1.1. Sufficient resources </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-see-programming-sec.html#mwg-see-programming-sec-who');" title="5.1.2. WhoÂ´s who?"> 5.1.2. WhoÂ´s who? </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-see-programming-sec.html#mwg-see-programming-sec-conv');" title="5.1.3. Using the conversation function"> 5.1.3. Using the conversation function </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-see-programming-sec.html#mwg-see-programming-sec-token');" title="5.1.4. Authentication tokens"> 5.1.4. Authentication tokens </a> </li>
</ul> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-see-programming-syslog.html');" title="5.2. Use of syslog(3)"> 5.2. Use of syslog(3) </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-see-programming-libs.html');" title="5.3. Modules that require system libraries"> 5.3. Modules that require system libraries </a> </li>
</ul> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-example.html');" title="6. An example module"> 6. An example module </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-see-also.html');" title="7. See also"> 7. See also </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-author.html');" title="8. Author/acknowledgments"> 8. Author/acknowledgments </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/mwg-copyright.html');" title="9. Copyright information for this document"> 9. Copyright information for this document </a> </li>
</ul> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/Linux-PAM_ADG.html');" title="The Application Developers' Guide"> The Application Developers' Guide </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-introduction.html');" title="1. Introduction"> 1. Introduction </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-introduction-description.html');" title="1.1. Description"> 1.1. Description </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-introduction-description.html');" title="1.1. Description"> 1.1. Description </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-introduction-synopsis.html');" title="1.2. Synopsis"> 1.2. Synopsis </a> </li>
</ul> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-overview.html');" title="2. Overview"> 2. Overview </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface.html');" title="3. The public interface to Linux-PAM"> 3. The public interface to Linux-PAM </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-by-app-expected.html');" title="3.1. What can be expected by the application"> 3.1. What can be expected by the application </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-by-app-expected.html');" title="3.1. What can be expected by the application"> 3.1. What can be expected by the application </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-by-app-expected.html#adg-pam_start');" title="3.1.1. Initialization of PAM transaction"> 3.1.1. Initialization of PAM transaction </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-by-app-expected.html#adg-pam_start');" title="3.1.1. Initialization of PAM transaction"> 3.1.1. Initialization of PAM transaction </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-by-app-expected.html#adg-pam_end');" title="3.1.2. Termination of PAM transaction"> 3.1.2. Termination of PAM transaction </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-by-app-expected.html#adg-pam_set_item');" title="3.1.3. Setting PAM items"> 3.1.3. Setting PAM items </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-by-app-expected.html#adg-pam_get_item');" title="3.1.4. Getting PAM items"> 3.1.4. Getting PAM items </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-by-app-expected.html#adg-pam_strerror');" title="3.1.5. Strings describing PAM error codes"> 3.1.5. Strings describing PAM error codes </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-by-app-expected.html#adg-pam_fail_delay');" title="3.1.6. Request a delay on failure"> 3.1.6. Request a delay on failure </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-by-app-expected.html#adg-pam_authenticate');" title="3.1.7. Authenticating the user"> 3.1.7. Authenticating the user </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-by-app-expected.html#adg-pam_setcred');" title="3.1.8. Setting user credentials"> 3.1.8. Setting user credentials </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-by-app-expected.html#adg-pam_acct_mgmt');" title="3.1.9. Account validation management"> 3.1.9. Account validation management </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-by-app-expected.html#adg-pam_chauthtok');" title="3.1.10. Updating authentication tokens"> 3.1.10. Updating authentication tokens </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-by-app-expected.html#adg-pam_open_session');" title="3.1.11. Start PAM session management"> 3.1.11. Start PAM session management </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-by-app-expected.html#adg-pam_close_session');" title="3.1.12. terminating PAM session management"> 3.1.12. terminating PAM session management </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-by-app-expected.html#adg-pam_putenv');" title="3.1.13. Set or change PAM environment variable"> 3.1.13. Set or change PAM environment variable </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-by-app-expected.html#adg-pam_getenv');" title="3.1.14. Get a PAM environment variable"> 3.1.14. Get a PAM environment variable </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-by-app-expected.html#adg-pam_getenvlist');" title="3.1.15. Getting the PAM environment"> 3.1.15. Getting the PAM environment </a> </li>
</ul> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-of-app-expected.html');" title="3.2. What is expected of an application"> 3.2. What is expected of an application </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-of-app-expected.html#adg-pam_conv');" title="3.2.1. The conversation function"> 3.2.1. The conversation function </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-of-app-expected.html#adg-pam_conv');" title="3.2.1. The conversation function"> 3.2.1. The conversation function </a> </li>
</ul> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-interface-programming-notes.html');" title="3.3. Programming notes"> 3.3. Programming notes </a> </li>
</ul> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-security.html');" title="4. Security issues of Linux-PAM"> 4. Security issues of Linux-PAM </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-security-library-calls.html');" title="4.1. Care about standard library calls"> 4.1. Care about standard library calls </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-security-library-calls.html');" title="4.1. Care about standard library calls"> 4.1. Care about standard library calls </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-security-service-name.html');" title="4.2. Choice of a service name"> 4.2. Choice of a service name </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-security-conv-function.html');" title="4.3. The conversation function"> 4.3. The conversation function </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-security-user-identity.html');" title="4.4. The identity of the user"> 4.4. The identity of the user </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-security-resources.html');" title="4.5. Sufficient resources"> 4.5. Sufficient resources </a> </li>
</ul> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-libpam_misc.html');" title="5. A library of miscellaneous helper functions"> 5. A library of miscellaneous helper functions </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-libpam-functions.html');" title="5.1. Functions supplied"> 5.1. Functions supplied </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-libpam-functions.html');" title="5.1. Functions supplied"> 5.1. Functions supplied </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-libpam-functions.html#adg-misc_conv');" title="5.1.1. Text based conversation function"> 5.1.1. Text based conversation function </a>
<ul class="articles">
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-libpam-functions.html#adg-misc_conv');" title="5.1.1. Text based conversation function"> 5.1.1. Text based conversation function </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-libpam-functions.html#adg-pam_misc_paste_env');" title="5.1.2. Transcribing an environment to that of PAM"> 5.1.2. Transcribing an environment to that of PAM </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-libpam-functions.html#adg-pam_misc_drop_env');" title="5.1.3. Liberating a locally saved environment"> 5.1.3. Liberating a locally saved environment </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-libpam-functions.html#adg-pam_misc_setenv');" title="5.1.4. BSD like PAM environment variable setting"> 5.1.4. BSD like PAM environment variable setting </a> </li>
</ul> </li>
</ul> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-porting.html');" title="6. Porting legacy applications"> 6. Porting legacy applications </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-glossary.html');" title="7. Glossary of PAM related terms"> 7. Glossary of PAM related terms </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-example.html');" title="8. An example application"> 8. An example application </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-files.html');" title="9. Files"> 9. Files </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-see-also.html');" title="10. See also"> 10. See also </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-author.html');" title="11. Author/acknowledgments"> 11. Author/acknowledgments </a> </li>
<li class="chapter"> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/adg-copyright.html');" title="12. Copyright information for this document"> 12. Copyright information for this document </a> </li>
</ul> </li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<header class="book-header">
<div class="dropdown pull-right js-toolbar-action">
<a class="btn toggle-dropdown" aria-label="Language" href="#">
<i class="fa fa-globe"></i>
</a>
<div class="dropdown-menu dropdown-left">
<div class="dropdown-caret"><span class="caret-outer"></span><span class="caret-inner"></span></div>
<div class="buttons">
<button class="button size-1" onclick="changeLang('zh_CN')">中文</button>
</div>
<div class="buttons">
<button class="button size-1" onclick="changeLang('en_US')">English</button>
</div>
</div>
</div>
<a class="btn pull-right js-toolbar-action non-mobile" aria-label="Sign up" href="register.html">
<i class="fa fa-sign-in"></i> <span>注册</span>
</a>
<a class="btn pull-right js-toolbar-action non-mobile" aria-label="Sign in" href="register.html">
<i class="fa fa-sign-in"></i>
<span>登录</span>
</a>
<a class="btn pull-left js-toolbar-action btn-summary" href="#"><i class="fa fa-align-justify"></i></a>
<div class="dropdown pull-left font-settings js-toolbar-action">
<a class="btn toggle-dropdown" aria-label="Font Settings" href="#">
<i class="fa fa-font"></i>
</a>
<div class="dropdown-menu dropdown-right">
<div class="dropdown-caret"><span class="caret-outer"></span><span class="caret-inner"></span></div>
<div class="buttons">
<button class="button size-2 font-reduce">A</button>
<button class="button size-2 font-enlarge">A</button>
</div>
<div class="buttons">
<button class="button size-2 family-serif">Serif</button>
<button class="button size-2 family-sans">Sans</button>
</div>
<div class="buttons">
<button class="button size-3 theme-white">White</button>
<button class="button size-3 theme-sepia">Sepia</button>
<button class="button size-3 theme-night">Night</button>
</div>
</div>
</div>
<a class="btn pull-left js-toolbar-action non-mobile" aria-label="Home" href="en.html">
<i class="fa fa-home"></i> <span>首页</span>
</a>
<a class="btn pull-left js-toolbar-action non-mobile" aria-label="Guide" href="javascript:window.open('https://www.javadoc.org/');">
<i class="fa fa-book"></i> <span>API Docs</span>
</a>
<a class="btn pull-left js-toolbar-action non-mobile" aria-label="Tools" href="index37.html">
<i class="fa fa-gears"></i> <span>工具</span>
</a>
<div class="dropdown pull-left js-toolbar-action mobile">
<a class="btn toggle-dropdown" aria-label="Language" href="#">
<i class="fa fa-chevron-down"></i>
</a>
<div class="dropdown-menu dropdown-right">
<div class="dropdown-caret"><span class="caret-outer"></span><span class="caret-inner"></span></div>
<div class="buttons">
<a class="button size-1" aria-label="Home" href="en.html">
<i class="fa fa-home"></i> <span>首页</span>
</a>
</div>
<div class="buttons">
<a class="button size-1" aria-label="Guide" href="javascript:window.open('https://www.javadoc.org/');">
<i class="fa fa-book"></i> <span>API Docs</span>
</a>
</div>
<div class="buttons">
 <a class="button size-1" aria-label="Tools" href="index37.html">
<i class="fa fa-gears"></i> <span>工具</span>
</a>
</div>
</div>
</div>
<div id="autocomplete" class="pull-right"></div>
<span id="toolbar-title"></span>
</header>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<section class="normal markdown-section">
<div id="content">
<h1>The Linux-PAM Guides</h1>
<div><ins class="adsbygoogle" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-6108808167664152" data-ad-slot="6964403648"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<div><center>
</center>
<hr>
<p> Here is the documentation for Linux-PAM. As you will see it is currently not complete. </p>
<p> </p>
<ul>
<li> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/Linux-PAM_SAG.html');">The System Administrators' Guide</a> </li>
<li> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/Linux-PAM_MWG.html');">The Module Writers' Guide</a> </li>
<li> <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/Linux-PAM_ADG.html');">The Application Developers' Guide</a> </li>
</ul>
<p> The <a href="javascript:window.open('https://www.docs4dev.com/docs/en/linux-pam/1.1.2/reference/old-index.html');">old</a> versions are still available. </p>
<hr></div>
</div>
</section>
<div class="right-sidebar">
<div class="affix"><ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6108808167664152" data-ad-slot="3102929424" data-ad-format="auto" data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
</div>
</div>
<div class="ft">
<a href="#toolbar-title" id="anchorNavigationExGoTop"><i class="fa fa-arrow-up"></i></a>
<footer class="footer">
<div class="footer__container--normal">
<img alt="扫码关注公众号" title="扫码关注公众号" src="static/picture/qr-code.png" width="170" height="170">
<div class="footer__description--normal">
<p class="paragraph footer__author--normal">Docs4dev<sup class="super">&#xAE;</sup>
</p>
<p class="paragraph footer__quote&#45;&#45;normal">
如果你在使用过程中遇到任何问题，可以在 <a href="javascript:window.open('https://github.com/docs4dev/docs4dev-issues');" target="_blank" rel="noopener noreferrer">这里<i class="fa fa-external-link"></i></a> 提issue。
</p>
<div class="footer__main--normal">
<p class="paragraph footer__main__paragraph--normal copyright" style="color: #666 !important;">
<a href="javascript:window.open('https://beian.miit.gov.cn/');">
蜀ICP备14021783号-6
</a>
</p>
<p class="paragraph footer__main__paragraph--normal copyright" style="color: #666 !important;">
Copyright &#xA9; Docs4dev all
right reserved, powered by <a href="index2.html" target="_blank">Docs4dev</a></p>
</div>
</div>
</div>
<div class="box__issues">
</div>
</footer>
</div>
</div>
</div>
</div>
</div>
<script>
  var hasToc = true;
  /*  var downloadable = /!*false*!/ false;
    var editable = /!*false*!/ false;
    var code = /!*"linux-pam"*!/ false;
    var version = /!*"1.1.2"*!/ false;
    var type = /!*"reference"*!/ false;
    var lang = /!*"en"*!/ 'en';
    //edit link
    require(["gitbook", "jQuery"], function (gitbook, $) {
      gitbook.events.bind('start', function (e, config) {
        // Add edit toolbar to left
        var chapterId = /!*16528*!/ 0;
        if (downloadable) {
          gitbook.toolbar.createButton({
            icon: 'fa fa-download',
            text: '下载',
            onClick: function () {
              window.open('/download?code=' + code + '&version=' + version + '&type=' + type + '&lang=' + lang);
            }
          });
        }
        if (editable) {
          gitbook.toolbar.createButton({
            icon: 'fa fa-edit',
            text: '编辑此页',
            onClick: function () {
              window.open('/docs/edit?chapterId=' + chapterId + '&lang=' + lang);
            }
          });
        }
      });
    });*/
</script>
<script>
    var code = "linux-pam";
    var lang = "en";
  </script>

<script src="static/js/autocomplete-js.js"></script>
<script src="static/js/app.min.js"></script>
<script src="static/js/search.min.js"></script>
</body>
</html>
